package de.tudarmstadt.winf2.bank;

import de.tudarmstadt.winf2.bank.exceptions.KontoNichtGedecktException;
import de.tudarmstadt.winf2.bank.exceptions.NegativerBetragException;

public abstract class Bankkonto {

	
	private String inhaber;
	private int kontoNr;
	protected double kontostand;
	protected int transaktionen;
	protected static final double transaktionsgebuehr = 0.02;
	
	public Bankkonto(String inhaber, int kontoNr){
		this.inhaber = inhaber;
		this.kontoNr = kontoNr;
		this.kontostand = 0;
	}
	
	public void einzahlen(double betrag) throws NegativerBetragException{
		if(betrag < 0)
			throw new NegativerBetragException();
		
		this.kontostand += betrag;
		this.transaktionen++;
	}
	
	public void auszahlen(double betrag) throws NegativerBetragException, KontoNichtGedecktException{
		if(betrag < 0)
			throw new NegativerBetragException();
		if(betrag > kontostand)
			throw new KontoNichtGedecktException();
		
		this.kontostand -= betrag;
		this.transaktionen++;
	}
	
	public void druckeKontoauszug(){
		System.out.println("Kontoauszug");
		System.out.println("Inhaber: "+inhaber);
		System.out.println("Kontonummer: "+kontoNr);
		System.out.println("Kontostand: "+kontostand);
	}
	
	public abstract void monatsabschluss();
}
